package xyz.icxl.android.architecture.data.net.okhttp.interceptors

import okhttp3.Interceptor
import okhttp3.Response
import okhttp3.ResponseBody.Companion.toResponseBody
import org.json.JSONObject
import java.lang.Exception

/**
 * 文件描述：数据格式化拦截器
 *
 * 文件创建人：cxl
 *
 * 创建时间：2021 年 11月 26 日
 *
 * 文件版本：v1.0
 *
 * 版本描述：创建文件
 */
class DataFormatInterceptor: Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val response = chain.proceed(chain.request())
        try {
            val bodyStr = response.body?.string()?:"{}"
            if(bodyStr.isEmpty()||bodyStr==""){
                return response.newBuilder().body(bodyStr.toResponseBody(response.body?.contentType()))
                    .build()
            }
            val jsonObject = JSONObject(bodyStr)

            return if (jsonObject.has("code") && jsonObject.getInt("code") == 0){
                jsonObject.put("data",null)
                response.newBuilder()
                    .body(jsonObject.toString().toResponseBody(response.body?.contentType()))
                    .build()
            }else if(jsonObject.has("code")
                && jsonObject.getInt("code") != 0
                && jsonObject.has("data")
                && jsonObject.get("data").toString().isEmpty()
            ){
                jsonObject.put("data",null)
                response.newBuilder()
                    .body(jsonObject.toString().toResponseBody(response.body?.contentType()))
                    .build()
            }else{
                response.newBuilder().body(bodyStr.toResponseBody(response.body?.contentType()))
                    .build()
            }
        }catch (e:Exception){
            e.printStackTrace()
        }
        return response
    }
}